#ifndef X3C_H
#define X3C_H

#include "common.h"

#include <vector>

// Pair (or very occassionally three-tuple)
// Usually points to two nets (diffpair) or two symbol pads (connected pads)
template <AllegroVersion version>
struct x3C
{
    uint32_t t;
    uint32_t k;
#if __cplusplus >= 202002L
    COND_FIELD(version >= A_174, uint32_t, un);
#endif
    uint32_t size;

    uint32_t TAIL;
    operator x3C<A_174>() const;
    static constexpr AllegroVersion versions[1] = {A_174};

    std::vector<uint32_t> ptrs;
};

#if __cplusplus < 202002L
template <> struct x3C<A_174>
{
    uint32_t t;
    uint32_t k;
    uint32_t un;
    uint32_t size;

    uint32_t TAIL;
    operator x3C<A_174>() const;
    static constexpr AllegroVersion versions[1] = {A_174};

    std::vector<uint32_t> ptrs;
};
#endif

#endif // X3C_H
